#ifndef PAGEWIDGETMINI_H
#define PAGEWIDGETMINI_H



#include "../../../../kegui_global.h"

#include "totalitem.h"
#include "gotopageinput.h"
#include "sizepagecombox.h"

#include <QWidget>
#include <QPushButton>
#include <QPaintEvent>
#include <QKeyEvent>

namespace kepen {
namespace core {

class KEGUI_EXPORT PageWidgetMini : public QWidget
{
    Q_OBJECT
public:
    explicit PageWidgetMini(QWidget *parent = nullptr);

    ~PageWidgetMini() ;
protected:
    void keyPressEvent(QKeyEvent *event) override;

public:
    /**
     * @brief SetTotalItem 设置总条目的显示
     * @param nTotal 总条目
     */
    void SetTotalItem(int nTotal);
    int getSizePage()const;
    int getCurrPage()const;
    int getMaxPage()const;

    void setCurrentPage(int page);

    /**
     * @brief SetItemPerPage 设置每页显示多少条目
     * @param args 条目数组，数组元素必须大于0，且后面数必须大于前面
     * @param size 数组大小
     */
    void SetItemPerPage(int* args, int size);

    /**
     * @brief Refresh 设置完条目或者每页条目后必须调用该函数刷新
     */
    void Refresh();

protected:
    void Init();
    void paintEvent(QPaintEvent* event) override;

private:




    /**
     * @brief ChangeView 修改页数的显示
     * @param currentPage 当前页数
     */
    void ChangeView(int currentPage);



    /**
     * @brief Reload 重新加载分页
     */
    void Reload();

void keyPress4Page(int key);

private:
    QHBoxLayout* m_pHMainLayout;

    QPushButton* m_pBtnFirst;
    QPushButton* m_pBtnLeft;
    QPushButton* m_pBtnRight;
    QPushButton* m_pBtnLast;

    TotalItem* m_pTotalItem;
    SizePageCombox* m_pItemEachPage;
    GotoPageInput* m_pGotoItem;
    int m_nCurrentPage; // 当前页数
    int m_nMaxPage; // 最大页数

private Q_SLOTS:
    void clearPage();
    void ClearChildrenImpl();

Q_SIGNALS:
    void GotoPageSignals(int toPage); // 页码变化
    // void NumberPerPageChanged(int nSizePage,int indexPage); // 每页条码变化



};


}
}

#endif // PAGEWIDGETMINI_H
